package cn.iocoder.yudao.module.obj.service.base;

import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.obj.controller.admin.base.vo.*;
import cn.iocoder.yudao.module.obj.dal.dataobject.base.ObjBaseInfoDO;
import cn.iocoder.yudao.module.obj.dal.dataobject.base.ObjDocInfoDO;
import cn.iocoder.yudao.module.obj.dal.dataobject.base.ObjDrmInfoDO;
import cn.iocoder.yudao.module.obj.dal.dataobject.base.ObjPlanInfoDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;

/**
 * 项目基础信息表  Service 接口
 *
 * @author 测试用户
 */
public interface ObjBaseInfoService {

    /**
     * 创建项目基础信息表 
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createBaseInfo(@Valid ObjBaseInfoSaveReqVO createReqVO);

    /**
     * 更新项目基础信息表 
     *
     * @param updateReqVO 更新信息
     */
    void updateBaseInfo(@Valid ObjBaseInfoSaveReqVO updateReqVO);

    /**
     * 删除项目基础信息表 
     *
     * @param id 编号
     */
    void deleteBaseInfo(Long id);

    /**
     * 获得项目基础信息表 
     *
     * @param id 编号
     * @return 项目基础信息表 
     */
    ObjBaseInfoDO getBaseInfo(Long id);

    /**
     * 获得项目基础信息表 分页
     *
     * @param pageReqVO 分页查询
     * @return 项目基础信息表 分页
     */
    PageResult<ObjBaseInfoDO> getBaseInfoPage(ObjBaseInfoPageReqVO pageReqVO);

    // ==================== 子表（项目文档信息表 ） ====================

    /**
     * 获得项目文档信息表 分页
     *
     * @param pageReqVO 分页查询
     * @param xmid 项目编号
     * @return 项目文档信息表 分页
     */
    PageResult<ObjDocInfoDO> getDocInfoPage(PageParam pageReqVO, String xmid);

    /**
     * 创建项目文档信息表 
     *
     * @param docInfo 创建信息
     * @return 编号
     */
    Long createDocInfo(@Valid ObjDocInfoDO docInfo);

    /**
     * 更新项目文档信息表 
     *
     * @param docInfo 更新信息
     */
    void updateDocInfo(@Valid ObjDocInfoDO docInfo);

    /**
     * 删除项目文档信息表 
     *
     * @param id 编号
     */
    void deleteDocInfo(Long id);

	/**
	 * 获得项目文档信息表 
	 *
	 * @param id 编号
     * @return 项目文档信息表 
	 */
    ObjDocInfoDO getDocInfo(Long id);

    // ==================== 子表（项目资源设备信息表 ） ====================

    /**
     * 获得项目资源设备信息表 分页
     *
     * @param pageReqVO 分页查询
     * @param xmid 项目编号
     * @return 项目资源设备信息表 分页
     */
    PageResult<ObjDrmInfoDO> getDrmInfoPage(PageParam pageReqVO, String xmid);

    /**
     * 创建项目资源设备信息表 
     *
     * @param drmInfo 创建信息
     * @return 编号
     */
    Long createDrmInfo(@Valid ObjDrmInfoDO drmInfo);

    /**
     * 更新项目资源设备信息表 
     *
     * @param drmInfo 更新信息
     */
    void updateDrmInfo(@Valid ObjDrmInfoDO drmInfo);

    /**
     * 删除项目资源设备信息表 
     *
     * @param id 编号
     */
    void deleteDrmInfo(Long id);

	/**
	 * 获得项目资源设备信息表 
	 *
	 * @param id 编号
     * @return 项目资源设备信息表 
	 */
    ObjDrmInfoDO getDrmInfo(Long id);

    // ==================== 子表（项目实施计划信息表 ） ====================

    /**
     * 获得项目实施计划信息表 分页
     *
     * @param pageReqVO 分页查询
     * @param xmid 项目编号
     * @return 项目实施计划信息表 分页
     */
    PageResult<ObjPlanInfoDO> getPlanInfoPage(PageParam pageReqVO, String xmid);

    /**
     * 创建项目实施计划信息表 
     *
     * @param planInfo 创建信息
     * @return 编号
     */
    Long createPlanInfo(@Valid ObjPlanInfoDO planInfo);

    /**
     * 更新项目实施计划信息表 
     *
     * @param planInfo 更新信息
     */
    void updatePlanInfo(@Valid ObjPlanInfoDO planInfo);

    /**
     * 删除项目实施计划信息表 
     *
     * @param id 编号
     */
    void deletePlanInfo(Long id);

	/**
	 * 获得项目实施计划信息表 
	 *
	 * @param id 编号
     * @return 项目实施计划信息表 
	 */
    ObjPlanInfoDO getPlanInfo(Long id);

}